import java.util.Arrays;

public class homework {
    //作业标题(1682)
    //奇数位于偶数之前
    //
    //作业内容
    //调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
    //
    //如数组：[1,2,3,4,5,6]
    //
    //调整后可能是：[1, 5, 3, 4, 2, 6]
    public static void test1()
    {
        int[] array = new int[] {1,2,3,4,5,6,7,8};
        System.out.println(Arrays.toString(array));

        int i = 0;
        int j = array.length - 1;
        while(i < j)
        {
            while(i < j)
            {
                if(array[i] % 2 == 0)
                {
                    break;
                }
                i++;
            }

            while(i < j)
            {
                if(array[j] % 2 != 0)
                {
                    break;
                }
                j--;
            }

            int cnt = array[i];
            array[i] = array[j];
            array[j] = cnt;
        }

        System.out.println(Arrays.toString(array));
    }

    //作业标题(1710)
    //二分查找
    //
    //作业内容
    //给定一个有序整型数组, 实现二分查找
    public static void test2()
    {
        int[] array = new int[] {1,2,3,4,5,6,7,8,9};
        int x = 1;

        int i = 0;
        int j = array.length - 1;
        while(i <= j)
        {
            int index = (i + j)/2;
            if(array[index] < x)
            {
                i = index + 1;
            }
            else if(array[index] == x)
            {
                System.out.println(index);
                break;
            }
            else
            {
                j = index - 1;
            }
        }

    }

    //作业标题(1712)
    //冒泡排序
    //
    //作业内容
    //给定一个整型数组, 实现冒泡排序(升序排序)
    public static void test3()
    {
        int[] array = new int[] {9,5,6,7,4,3,8,1,2,0};
        System.out.println(Arrays.toString(array));

        for(int i = 0; i < array.length; i++)
        {
            boolean flag = false;
            for(int j = 0; j < array.length - i - 1; j++)
            {
                if(array[j] < array[j + 1])
                {
                    int cnt = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = cnt;
                    flag = true;
                }
            }

            if(flag == false)
            {
                break;
            }
        }

        System.out.println(Arrays.toString(array));
    }

    //作业标题(2434)
    //两数之和
    //
    //作业内容
    //给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target 的那 两个 整数，并返回它们的数组下标。
    //你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。
    //你可以按任意顺序返回答案。
    //示例 1：
    //输入：nums = [2,7,11,15], target = 9
    //
    //输出：[0,1]
    //
    //解释：因为 nums[0] + nums[1] == 9 ，返回 [0, 1] 。
    public static void test4()
    {
        int[] array = new int[]{2,7,11,15};
        int target = 9;
        int[] ret = new int[2];

        for(int i = 0; i < array.length; i++)
        {
            boolean flag = false;
            for(int j = i + 1; j < array.length; j++)
            {
                if(array[i] + array[j] == target)
                {
                    ret[0] = i;
                    ret[1] = j;
                    flag = true;
                    break;
                }
            }
            if(flag)
            {
                break;
            }
        }
        System.out.println(Arrays.toString(ret));
    }

    //作业标题(2435)
    //只出现一次的数字
    //
    //作业内容
    //给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
    //
    //
    //
    //﻿示例 1:
    //
    //输入: [2,2,1]
    //输出: 1
    //示例 2:
    //
    //输入: [4,1,2,1,2]
    //输出: 4
    public static void test5()
    {
        int[] array = new int[] {2,2,1};
        int ret = 0;

        for(int x : array)
        {
            ret ^= x;
        }

        System.out.println(ret);
    }

    //作业标题(2436)
    //多数元素
    //
    //作业内容
    //给定一个大小为 n 的数组，找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
    //你可以假设数组是非空的，并且给定的数组总是存在多数元素。
    //示例 1：
    //
    //输入：[3,2,3]
    //输出：3
    //示例 2：
    //
    //输入：[2,2,1,1,1,2,2]
    //输出：2
    public static void test6()
    {
        int[] array = new int[]{2,2,1,1,1,2,2};
        Arrays.sort(array);

        System.out.println(array[array.length / 2]);
    }

    //作业标题(2437)
    //存在连续三个奇数的数组
    //
    //作业内容
    //给你一个整数数组 arr，请你判断数组中是否存在连续三个元素都是奇数的情况：如果存在，请返回 true ；否则，返回 false 。
    //
    //示例 1:
    //输入：arr = [2,6,4,1]
    //输出：false
    //解释：不存在连续三个元素都是奇数的情况。
    //
    //示例 2：
    //输入：arr = [1,2,34,3,4,5,7,23,12]
    //输出：true
    //解释：存在连续三个元素都是奇数的情况，即 [5,7,23] 。
    public static void test7()
    {
        int[] array = new int[]{1,2,34,3,4,5,7,23,12};
        for(int i = 1; i < array.length - 1; i++)
        {
            if(array[i - 1] % 2 != 0 && array[i] % 2 != 0 && array[i + 1] % 2 != 0)
            {
                System.out.println(true);
                return;
            }
        }
        System.out.println(false);
    }
    public static void main(String[] args) {
//        test1();
//        test2();
//        test3();
//        test4();
//        test5();
//        test6();
        test7();
    }

}
